// 工作流数据模型
export interface Workflow {
  id: number;
  name: string; // 工作流名称
  description: string; // 工作流描述
  category: string; // 工作流分类
  version: string; // 版本号
  status: number; // 状态：0-草稿 1-已发布 2-已停用
  flowData: string; // 工作流图数据(JSON字符串)
  createTime: string; // 创建时间
  updateTime: string; // 更新时间
  createBy: string; // 创建人
  updateBy: string; // 更新人
}

// 工作流查询参数
export interface WorkflowQuery {
  curPage: number;
  pageSize: number;
  total: number;
  pages: number;
  param: {
    name?: string;
    category?: string;
    status?: number;
  };
}

// 工作流表单数据
export interface WorkflowForm {
  id?: number;
  name: string;
  description: string;
  category: string;
  version: string;
  status: number;
  flowData: string;
}

// 工作流实例数据模型
export interface WorkflowInstance {
  id: number;
  workflowId: number; // 工作流ID
  workflowName: string; // 工作流名称
  businessKey: string; // 业务键
  status: number; // 状态：0-运行中 1-已完成 2-已终止 3-已暂停
  startTime: string; // 开始时间
  endTime?: string; // 结束时间
  startUser: string; // 发起人
  currentNodes: string; // 当前节点(JSON数组)
  traceData: string; // 轨迹数据(JSON字符串)
  variables: string; // 流程变量(JSON字符串)
}

// 工作流节点数据模型
export interface WorkflowNode {
  id: string;
  type: string; // 节点类型：start, end, userTask, serviceTask, gateway
  name: string; // 节点名称
  x: number; // X坐标
  y: number; // Y坐标
  properties: Record<string, any>; // 节点属性
}

// 工作流边数据模型
export interface WorkflowEdge {
  id: string;
  sourceNodeId: string; // 源节点ID
  targetNodeId: string; // 目标节点ID
  type: string; // 边类型
  properties: Record<string, any>; // 边属性
}

// 工作流图数据模型
export interface WorkflowGraphData {
  nodes: WorkflowNode[];
  edges: WorkflowEdge[];
}

// 工作流轨迹数据模型
export interface WorkflowTrace {
  id: string;
  nodeId: string; // 节点ID
  nodeName: string; // 节点名称
  action: string; // 动作：start, complete, skip, reject
  userId: string; // 操作用户ID
  userName: string; // 操作用户名
  timestamp: string; // 操作时间
  comment?: string; // 备注
  variables?: Record<string, any>; // 变量
}

// 工作流状态选项
export const WORKFLOW_STATUS_OPTIONS = [
  { label: '草稿', value: 0 },
  { label: '已发布', value: 1 },
  { label: '已停用', value: 2 }
];

// 工作流实例状态选项
export const WORKFLOW_INSTANCE_STATUS_OPTIONS = [
  { label: '运行中', value: 0 },
  { label: '已完成', value: 1 },
  { label: '已终止', value: 2 },
  { label: '已暂停', value: 3 }
];

// 工作流分类选项
export const WORKFLOW_CATEGORY_OPTIONS = [
  { label: '审批流程', value: 'approval' },
  { label: '业务流程', value: 'business' },
  { label: '系统流程', value: 'system' },
  { label: '其他', value: 'other' }
];

// 节点类型选项
export const NODE_TYPE_OPTIONS = [
  { label: '开始节点', value: 'start' },
  { label: '结束节点', value: 'end' },
  { label: '用户任务', value: 'userTask' },
  { label: '服务任务', value: 'serviceTask' },
  { label: '网关', value: 'gateway' }
];

